<?php
namespace Xcx\Controller;

use Xcx\Model\GoodsOrderModel;

vendor("WxPay/lib/WxPayApi");
vendor("WxPay/lib/WxPayNotify");
vendor("WxPay/lib/WxPayLog");

class PayNotifyCallBack extends \WxPayNotify{
	public function Queryorder($transaction_id)
	{
		$input = new \WxPayOrderQuery();
		$input->SetTransaction_id($transaction_id);
		
		$result = \WxPayApi::orderQuery($input);
		\Log::DEBUG("query:" . json_encode($result));
		
		if(array_key_exists("return_code", $result)
				&& array_key_exists("result_code", $result)
				&& $result["return_code"] == "SUCCESS"
				&& $result["result_code"] == "SUCCESS")
		{
			return true;
		}
		return false;
	}
	
	//重写回调处理函数
	public function NotifyProcess($data, &$msg)
	{
		\Log::DEBUG("call back:" . json_encode($data));
		$notfiyOutput = array();
		if(!array_key_exists("transaction_id", $data)){
			$msg = "输入参数不正确";
			\Log::DEBUG("回调处理:".$msg);
			return false;
		}

		$mc_order = $data["out_trade_no"];
        $money = $data["cash_fee"]+$data["coupon_fee"];

        $GoodsOrder = new GoodsOrderModel();
        $info = $GoodsOrder->getOrderInfo($mc_order);

        $price = $info['pay_fee'] * 100;
        if ($price != $money) {
            $msg = "价格信息错误";
            \Log::DEBUG("回调处理:".$msg);
            return false;
        }

        if ($info['state'] == '2') {
            $msg = "订单处理成功";
            \Log::DEBUG("回调处理:".$msg);
            return true;
        }

        $res = $GoodsOrder->updateOrderState($mc_order, 2);
        if (!$res) {
            $msg = "订单状态更新失败";
            \Log::DEBUG("回调处理:".$msg);
            return false;
        }

		//查询订单，判断订单真实性
		if(!$this->Queryorder($data["transaction_id"])){
			$msg = "订单查询失败";
			\Log::DEBUG("回调处理".$msg);
			return false;
		}


// 		$pay = new AlipayLogic();
		
// 		if($pay->wxpaySuccess($data)){
// 			\Log::DEBUG("回调处理:成功");
// 			return true;
// 		}
// 		else{
// 			\Log::DEBUG("回调处理:失败");
// 			return false;
// 		}
	}
}